home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD ROM Paradise Collection 4
/
CD ROM Paradise Collection 4 1995 Nov.iso
/
program
/
swagd_f.zip
/
DRIVES.SWG
/
0002_CHANGDRV.PAS.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-05-28
|
4KB
|
83 lines
{ Author: Greg Estabrooks }
Program DriveInf;
Uses
Crt, (* ClrScr routine *)
Dos; (* Register Type, Intr() Routine *)
Var
Regs :Registers; (* To hold register info For Intr() *)
CH :Char; (* To hold Drive to change to *)
Function GetDrive :Byte;
(* Routine to Determine the default drive *)
begin
Regs.AX := $1900; (* Function to determine drive *)
Intr($21,Regs); (* Call Dos int 21h *)
GetDrive := Regs.AL; (* Return Proper result *)
(* Returns 0 = A, 1 = B, 2 = C, ETC *)
end;
Procedure ChangeDrive( Drive :Byte );
(* Routine to change default drive *)
begin
Regs.AH := $0E; (* Function to change Drives *)
Regs.DL := Drive; (* Drive to change to *)
Intr($21,Regs); (* Call Dos Int 21h *)
end;
Function NumDrives :Byte;
(* Routine to determine number of valid drives *)
Var
CurDrive :Byte; (* Temporary storage For current drive*)
begin
CurDrive := GetDrive; (* Find out the current drive *)
Regs.AH := $0E; (* Function to change drives *)
Regs.DL := CurDrive; (* Change to current drive *)
Intr($21, Regs); (* Call Dos *)
NumDrives := Regs.AL; (* Return proper info to user *)
end;
begin
ClrScr; (* Clear the screen *)
(* Write Current Drive to Screen *)
Writeln('Current Drive Is : ',CHR(GetDrive+65 ),':\');
Write('What Drive do you wish to change to ?[A..');
WriteLn(CHR(NumDrives + 64 ),']');
CH := ReadKey; (* Get Choice *)
CH := UpCase( CH ); (* Convert to uppercase *)
ChangeDrive( Ord( CH )-65 ); (* Change to chosen drive *)
end.
(**********************************************************************)
{ And here are the above in Inline Asm. I hope these help. }
Function GetDrive :Byte; Assembler;
{ Routine to Determine the default drive }
Asm
Mov AX,$1900 { Function to determine drive }
Int $21 { Call Dos int 21h }
{ Returns 0 = A, 1 = B, 2 = C, ETC }
end;{GetDrive}
Procedure ChangeDrive( Drive :Byte ); Assembler;
{ Routine to change default drive }
{ 0 = A, 1 = B, 2 = C, ETC }
Asm
Mov AH,$0E { Function to change Drives }
Mov DL,Drive { Drive to change to }
Int $21 { Call Dos Int 21h }
end;{ChangeDrive}
Function NumDrives :Byte; Assembler;
{ Routine to determine number of valid drives }
Asm
Call GetDrive { Find out the current drive, Returns }
{ Drive in AL }
Mov AH,$0E { Function to change drives }
Mov DL,AL { Change to current drive }
Int $21 { Call Dos }
{ Number of drives is returns in AL }
end;{NumDrives}